#include <curl/curl.h>

#include <buola/buola.h>
#include <buola/net/chttpform.h>

#include <buola/io/curi.h>

namespace buola { namespace io {

CHTTPForm::CHTTPForm()
{
}

void CHTTPForm::Add(const std::string &pName,const std::string &pValue)
{
    if(!mText.empty()) mText+='&';

    mText+=uri_escape(pName);
    mText+='=';
    mText+=uri_escape(pValue);
}

class CHTTPMultiForm::SPImpl
{
public:
    SPImpl()
        :   mFormPost(nullptr)
        ,   mLastPtr(nullptr)
    {}

    struct curl_httppost *mFormPost;
    struct curl_httppost *mLastPtr;
};

CHTTPMultiForm::CHTTPMultiForm()
    :   mPImpl(new SPImpl)
{
}

CHTTPMultiForm::~CHTTPMultiForm()
{
}

void CHTTPMultiForm::Add(const std::string &pName,const std::string &pValue)
{
    curl_formadd(&mPImpl->mFormPost,&mPImpl->mLastPtr,
                 CURLFORM_COPYNAME,pName.c_str(),
                 CURLFORM_COPYCONTENTS,pValue.c_str(),
                 CURLFORM_END);
}

/*namespace io*/ } /*namespace buola*/ }
